behaviac的运行时提供有核心的更新行为树的功能,在其之上,还有logging,热加载,连调等调试功能。这些调试功能只是‘开发’功能,在游戏发布后实际上是不需要的。
除了可以在config.h中定义BEHAVIAC_RELEASE宏为1来完全使‘开发功能’不被编译外。也可以保留这些‘开发’功能但只是使用下面所列的‘开关’来关闭或者打开某些功能。
具体可以参考优化及性能
Cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | namespace behaviac{class BEHAVIAC_API Config{public:static bool IsProfiling();static void SetProfiling(bool bEnabled);//logging是否打开static bool IsLogging();static void SetLogging(bool bLogging);//logging打开的情况下,是否每次logging的时候都Flushstatic bool IsLoggingFlush();static void SetLoggingFlush(bool bFlush);//socket连接是否打开,只有打开socket连接,连调功能才会支持static bool IsSocketing();static void SetSocketing(bool bSocketing);//是否是阻塞模式,当时阻塞模式的时候,游戏会阻塞,等待编辑器的连接,//只有成功建立连接后,游戏才继续运行static bool IsSocketBlocking();static void SetSocketBlocking(bool bBlocking);//游戏和编辑器建立连接的时候使用的端口static void SetSocketPort(unsigned short port);static unsigned short GetSocketPort();//热加载是否打开static bool IsHotReload();static void SetHotReload(bool bHotReload);}; |
具体的代码可以查看behaviac/base/workspace.h
Unity
C#下同名函数的意义和Cpp一样,此外,IsSuppressingNonPublicWarning是个用来控制是否输出非public成员的警告。
当IsSuppressingNonPublicWarning为true的时候,Agent的成员(field,method,property)如果不是public的,则输出警告信息,从而可以修改其为public,这样的话,当使用导出格式为c#时其效率就是最高的,而且没有GC Alloc。
具体的代码请查看behaviac/runtime/workspace.cs
4 thoughts on “开发功能开关”